package communicate

import (
	"fmt"
	"shi_project/main/authentication"

	"github.com/gin-gonic/gin"
	"github.com/gomodule/redigo/redis"
	"github.com/gorilla/websocket"
)

var (
	Conns []*websocket.Conn //用来保存连接到websocket上的用户
	Pool  *redis.Pool       //创建redis连接池
)

func init() {
	Pool = &redis.Pool{ //实例化一个连接池
		MaxIdle: 16, //最初的连接数量
		// MaxActive:1000000,    //最大连接数量
		MaxActive:   0,   //连接池最大连接数量,不确定可以用0（0表示自动定义），按需分配
		IdleTimeout: 300, //连接关闭时间 300秒 （300秒不使用自动关闭）
		Dial: func() (redis.Conn, error) { //要连接的redis数据库
			return redis.Dial("tcp", "127.0.0.1:6379", redis.DialDatabase(1))
		},
	}
}
func ChatLog(c *gin.Context) {
	if err := authentication.IsPass(c, authentication.CommunicationModule); err != nil {
		c.JSON(200, gin.H{
			"code": -1,
			"msg":  err,
		})
		return
	}
	po := Pool.Get() //从连接池，取一个链接
	defer po.Close() //函数运行结束 ，把连接放回连接池
	res, err := po.Do("keys", "*")
	if err != nil {
		fmt.Println("res获取聊天记录失败(聊天的ｋｅｙ)=", res)
	}
	var log = make([]map[string]string, 0)
	// var nameList []string
	for _, v := range res.([]interface{}) {
		name := string(v.([]byte))
		// nameList = append(nameList, name)
		content, err := po.Do("get", name)
		if err != nil {
			fmt.Println("err获取聊天的内容失败=", err)
		}
		logItem := map[string]string{
			name: string(content.([]byte)),
		}
		log = append(log, logItem)
	}
	c.JSON(200, gin.H{
		"status": "200",
		"log":    log,
	})

}
